home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2004 April / Gamestar_61_2004-04_dvdb.iso / DVDStar / Editace / hltp.exe / {app} / Source Code / MAP Viewer / ConfigLoader.cpp < prev    next >
C/C++ Source or Header  |  2003-08-05  |  6KB  |  216 lines

  1. #include "stdafx.h"
  2. #include "ConfigLoader.h"
  3.  
  4. CConfigLoader::CConfigLoader(CConfig *Config, RichTextBox *txtConsole)
  5. {
  6.     this->Config = Config;
  7.     this->txtConsole = txtConsole;
  8. }
  9.  
  10. bool CConfigLoader::LoadConfigFile(String *sFile)
  11. {
  12.     if(!File::Exists(sFile))
  13.         return false;
  14.  
  15.     txtConsole->SelectionColor = Color::Green;
  16.     txtConsole->AppendText(String::Concat(S"Loading ", sFile, S"..."));
  17.  
  18.     StreamReader *ConfigFile;
  19.  
  20.     try
  21.     {
  22.         ConfigFile = new StreamReader(sFile, System::Text::Encoding::ASCII);
  23.     }
  24.     catch(Exception *e)
  25.     {
  26.         txtConsole->SelectionColor = Color::Red;
  27.         txtConsole->AppendText(String::Concat(S"Error loading ", sFile, S": ", e->Message, S"\n"));
  28.         return false;
  29.     }
  30.  
  31.     try
  32.     {
  33.         String *sLine, *sArg, *sVal;
  34.  
  35.         while((sLine = ConfigFile->ReadLine()) != NULL)
  36.         {
  37.             if(!ProcessLine(sLine, &sArg, &sVal))
  38.                 continue;
  39.  
  40.             try
  41.             {
  42.                 // General
  43.                 if(sArg->Equals("general.recentmapcount"))
  44.                 {
  45.                     Config->iRecentMAPCount = Convert::ToInt32(sVal);
  46.                 }
  47.  
  48.                 // Engine
  49.                 else if(sArg->Equals("engine.colorbits"))
  50.                 {
  51.                     Config->bColorBits = Convert::ToByte(sVal);
  52.                 }
  53.                 else if(sArg->Equals("engine.depthbits"))
  54.                 {
  55.                     Config->bDepthBits = Convert::ToByte(sVal);
  56.                 }
  57.                 else if(sArg->Equals("engine.backcolor.r"))
  58.                 {
  59.                     Config->cBackColor.R = Convert::ToSingle(sVal);
  60.                 }
  61.                 else if(sArg->Equals("engine.backcolor.g"))
  62.                 {
  63.                     Config->cBackColor.G = Convert::ToSingle(sVal);
  64.                 }
  65.                 else if(sArg->Equals("engine.backcolor.b"))
  66.                 {
  67.                     Config->cBackColor.B = Convert::ToSingle(sVal);
  68.                 }
  69.                 else if(sArg->Equals("engine.backcolor.a"))
  70.                 {
  71.                     Config->cBackColor.A = Convert::ToSingle(sVal);
  72.                 }
  73.                 else if(sArg->Equals("engine.forecolor.r"))
  74.                 {
  75.                     Config->cForeColor.R = Convert::ToSingle(sVal);
  76.                 }
  77.                 else if(sArg->Equals("engine.forecolor.g"))
  78.                 {
  79.                     Config->cForeColor.G = Convert::ToSingle(sVal);
  80.                 }
  81.                 else if(sArg->Equals("engine.forecolor.b"))
  82.                 {
  83.                     Config->cForeColor.B = Convert::ToSingle(sVal);
  84.                 }
  85.                 else if(sArg->Equals("engine.forecolor.a"))
  86.                 {
  87.                     Config->cForeColor.A = Convert::ToSingle(sVal);
  88.                 }
  89.                 else if(sArg->Equals("engine.highlightcolor.r"))
  90.                 {
  91.                     Config->cHighlightColor.R = Convert::ToSingle(sVal);
  92.                 }
  93.                 else if(sArg->Equals("engine.highlightcolor.g"))
  94.                 {
  95.                     Config->cHighlightColor.G = Convert::ToSingle(sVal);
  96.                 }
  97.                 else if(sArg->Equals("engine.highlightcolor.b"))
  98.                 {
  99.                     Config->cHighlightColor.B = Convert::ToSingle(sVal);
  100.                 }
  101.                 else if(sArg->Equals("engine.highlightcolor.a"))
  102.                 {
  103.                     Config->cHighlightColor.A = Convert::ToSingle(sVal);
  104.                 }
  105.                 else if(sArg->Equals("engine.outlinecolor.r"))
  106.                 {
  107.                     Config->cOutlineColor.R = Convert::ToSingle(sVal);
  108.                 }
  109.                 else if(sArg->Equals("engine.outlinecolor.g"))
  110.                 {
  111.                     Config->cOutlineColor.G = Convert::ToSingle(sVal);
  112.                 }
  113.                 else if(sArg->Equals("engine.outlinecolor.b"))
  114.                 {
  115.                     Config->cOutlineColor.B = Convert::ToSingle(sVal);
  116.                 }
  117.                 else if(sArg->Equals("engine.outlinecolor.a"))
  118.                 {
  119.                     Config->cOutlineColor.A = Convert::ToSingle(sVal);
  120.                 }
  121.  
  122.                 // Camera
  123.                 else if(sArg->Equals("camera.invertcamera"))
  124.                 {
  125.                     Config->bInvertCamera = Convert::ToBoolean(sVal);
  126.                 }
  127.                 else if(sArg->Equals("camera.cameraspeed"))
  128.                 {
  129.                     Config->fCameraSpeed = Convert::ToSingle(sVal);
  130.                 }
  131.                 else if(sArg->Equals("camera.cameraboost"))
  132.                 {
  133.                     Config->fCameraBoost = Convert::ToSingle(sVal);
  134.                 }
  135.  
  136.                 // Renderer
  137.                 else if(sArg->Equals("renderer.drawspecialtextures"))
  138.                 {
  139.                     Config->bDrawSpecialTextures = Convert::ToBoolean(sVal);
  140.                 }
  141.                 else if(sArg->Equals("renderer.drawselection"))
  142.                 {
  143.                     Config->bDrawSelection = Convert::ToBoolean(sVal);
  144.                 }
  145.                 else if(sArg->Equals("renderer.drawpointfile"))
  146.                 {
  147.                     Config->bDrawPointFile = Convert::ToBoolean(sVal);
  148.                 }
  149.                 else if(sArg->Equals("renderer.lightscene"))
  150.                 {
  151.                     Config->bLightScene = Convert::ToBoolean(sVal);
  152.                 }
  153.                 else if(sArg->Equals("renderer.outlinescene"))
  154.                 {
  155.                     Config->bOutlineScene = Convert::ToBoolean(sVal);
  156.                 }
  157.                 else if(sArg->Equals("renderer.rendermode"))
  158.                 {
  159.                     Config->eRenderMode = *static_cast<__box RenderMode::RenderMode*>(Enum::Parse(__typeof(RenderMode::RenderMode), sVal, false));
  160.                 }
  161.                 else if(sArg->Equals("renderer.texturefilter"))
  162.                 {
  163.                     Config->eTextureFilter = *static_cast<__box TextureFilter::TextureFilter*>(Enum::Parse(__typeof(TextureFilter::TextureFilter), sVal, false));
  164.                 }
  165.  
  166.                 //Textures
  167.                 else if(sArg->Equals("textures.halflifepath"))
  168.                 {
  169.                     Config->sHalfLifePath = sVal;
  170.                 }
  171.             }
  172.             catch(Exception *e)
  173.             {
  174.                 continue;
  175.             }
  176.         }
  177.     }
  178.     catch(Exception *e)
  179.     {
  180.         txtConsole->SelectionColor = Color::Red;
  181.         txtConsole->AppendText(String::Concat(S"Error loading ", sFile, S": ", e->Message, S"\n"));
  182.         ConfigFile->Close();
  183.         return false;
  184.     }
  185.  
  186.     ConfigFile->Close();
  187.  
  188.     txtConsole->SelectionColor = Color::Green;
  189.     txtConsole->AppendText("done.\n");
  190.  
  191.     return true;
  192. }
  193.  
  194. bool CConfigLoader::ProcessLine(String *sLine, String **sArg, String **sVal)
  195. {
  196.     *sArg = NULL;
  197.     *sVal = NULL;
  198.  
  199.     sLine = sLine->Trim();
  200.  
  201.     if(sLine->IndexOf("//") != -1)
  202.     {
  203.         sLine = sLine->Remove(sLine->IndexOf("//"), sLine->Length)->Trim();
  204.  
  205.         if(sLine->Length == 0)
  206.             return false;
  207.     }
  208.  
  209.     if(sLine->IndexOf("=") == -1)
  210.         return false;
  211.  
  212.     *sArg = sLine->Substring(0, sLine->IndexOf("="))->Trim()->ToLower();
  213.     *sVal = sLine->Substring(sLine->IndexOf("=") + 1)->Trim();
  214.  
  215.     return true;
  216. }